package Array;

/**
 * 12. 整数转罗马数字
 *
 *  思路：采用一个硬编码的方式构建一个Hash关系， 可以使用两个数组替代
 *  构建这个对照关系需要参考题意，把所有的数字与罗马字符的对比项都列出来
    然后使用这个hash关系， 从最大的数开始与num相除，遍历拼接对应字符即可。
 */
public class L_12 {
    int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
    String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

    public String intToRoman(int num) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < values.length ; i++) {
            int value = values[i];
            String symbol = symbols[i];
            // 当num大于等于当前value就减
            while (num >= value){
                num = num - value;
                sb.append(symbol);
            }
            if(num == 0){
                break;
            }
        }
        return sb.toString();
    }
}
